package com.jiyun.alipay.service.impl;

import com.jiyun.alipay.mapper.PayMapper;
import com.jiyun.alipay.service.PayService;
import com.jiyun.pojo.order.OrderCost;
import com.jiyun.pojo.order.OrderInformation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Service
public class PayServiceImpl implements PayService {
    @Autowired
    private PayMapper payMapper;

    @Override
    public OrderInformation findOrderInformationById(String orderId) {
        //查找订单基本信息
        return payMapper.getOrderById(orderId);
    }

    @Override
    public OrderCost findOrderCostById(String orderId) {
        return payMapper.getOrderCost(orderId);
    }

    /**
     * 更新订单状态
     * 本方法在事务中运行，确保支付方式、支付时间和订单费用的更新操作要么全部成功，要么全部不执行
     *
     * @param orderId 订单ID
     * @param payWay 支付方式
     */
    @Transactional
    @Override
    public void updateOrderStatus(String orderId, Integer payWay) {
        // 更新订单的支付信息，如支付状态等
        payMapper.updateOrderInformation(orderId);

        // 获取当前时间
        LocalDateTime now = LocalDateTime.now();
        // 定义时间格式化模式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 将当前时间格式化为字符串
        String formattedTime = now.format(formatter);
        // 更新订单的支付时间
        payMapper.updateOrderTime(orderId, formattedTime);

        // 根据支付方式更新订单的支付费用
        payMapper.updateOrderCost(orderId, payWay);
    }

}
